// 正文内容分析，获取目录
// 导入数据库类

import '../db/booksManager.dart';
import 'dart:convert';

class BookContentAnalyse {
  Future<bool> analyse(String bookName, String bookID, String content, String contengTableName) async {
    // 初始化数据库
    final db = booksManager();
    final chapterList = []; //章节列表
    await db.initializeDatabase();
    try {
      print("文本分析开始。。。。。");
      // RegExp chapterRegex = RegExp(r'第+.+(章|集)+.+\r\n'); //正则表达式匹配文本标题
      RegExp chapterRegex = RegExp(r'(第\s*[零一二三四五六七八九十百千万\d]+\s*[章回部节集卷册篇][^\r\n]*)\r?\n|(序\s*章|[楔引]言|前\s*言|后\s*记|尾\s*声)\r?\n'); //正则表达式匹配文本标题
      Iterable<Match> matches = chapterRegex.allMatches(content);

      // 将内容按章节分割成数组
      int lastIndex = 0;
      String title = "";
      int id = 0;
      // 获取小说目录和小说章节内容
      if (matches.length > 0)
        for (Match match in matches) {
          title = match.group(0)!;
          int index = match.start;
          chapterList.add(title);
          // 将章节内容存入数据库
          await db.insertContentTable(contengTableName, id, title, content.substring(lastIndex, index));
          id++;
          lastIndex = index + match.group(0)!.length;
        }
      await db.insertContentTable(contengTableName, id, title, content.substring(lastIndex));
      // 将章节列表存入数据库
      await db.updateBookInfo(bookID, "catalogue", jsonEncode(chapterList));

      print("文本分析完成！！！！！！");
      // db.closeDataBase();
      return true;
    } catch (e) {
      print("error:" + e.toString());
      return false;
    }
  }
}
